package com.java.simple.study.jvm.memstruct.heap;

/**
 * @author zhoujunlin
 * @date 2022年06月19日 21:33
 * @desc 变量替换测试
 * 开启逃逸分析 关闭标量替换
 * -Xms100m -Xmx100m -XX:+DoEscapeAnalysis -XX:+PrintGC -XX:-EliminateAllocations
 * 花费的时间为：58ms  发生GC
 * <p>
 * 开启逃逸分析 开启标量替换
 * -Xms100m -Xmx100m -XX:+DoEscapeAnalysis -XX:+PrintGC -XX:+EliminateAllocations
 * 花费的时间为：5ms  未发生GC
 */
public class ScalarReplace {
    public static class User {
        public int id;
        public String name;
    }

    public static void alloc() {
        // 未发生逃逸
        User user = new User();
        user.id = 5;
        user.name = "zhoujunlin";
    }

    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000000; i++) {
            alloc();
        }
        long end = System.currentTimeMillis();
        System.out.println("花费的时间为：" + (end - start) + "ms");
    }

}
